/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
        

        //方法：1可以使用hashmap
        //可以使用a访问完访问b，这样子两条链表的访问长度就相等了
        ListNode* p1 = headA;
        ListNode* p2 = headB;

        while(p1 != p2)
        {
            if(p1 == NULL)
            {
                p1 = headB;


            }
            else
            {
                p1 = p1->next;
            }
            if(p2 == NULL)
            {
                p2 = headA;


            }
            else
            {
                p2 = p2->next;
            }

        }

        return p1;
    }
};